home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / mac / developm / source / uupc30sr.cpt / Mac specific / host.c next >
Encoding:
C/C++ Source or Header  |  1992-02-09  |  3.0 KB  |  153 lines

  1. /*        mac.c
  2.  
  3.         macintosh host 
  4.  
  5. */
  6.  
  7. #include <stdio.h>
  8. #include "host.h"
  9. #include <string.h>
  10. #include <ctype.h>
  11. #include <setjmp.h>
  12. #include <errno.h>
  13.  
  14. # ifdef THINK_C
  15. # include <console.h>
  16. #endif THINK_C
  17.  
  18. char *curdir;
  19. char * getcwd();
  20. FILE * FOPEN();
  21.  
  22. int CHDIR();
  23. int    debuglevel;        /* debugging level */
  24.  
  25. #ifdef Upgrade
  26. long int systimeout = 0;
  27. #endif Upgrade
  28.  
  29. #ifdef STANDALONE
  30. char *flds[10];
  31. char line[128];
  32.  
  33. #define DMAILBOX    "mailbox"
  34. #define    DNAME        ""
  35. #define DHOME        "/usr/home/guest"
  36. #define    DDOMAIN        "mac.uucp"
  37. #define    DMAILDIR    "/usr/spool/mail"
  38. #define    DCONFDIR    "/usr/lib/uucp"
  39. #define    DSPOOLDIR    "/usr/spool/uucp"
  40. #define DPUBDIR        "/usr/spool/uucppublic"
  41. #define    DMAILSERVICE    "crash"
  42. #define    DNODENAME    "shappy"
  43. #define    DDEVICE        "modem"
  44. #define    DSPEED        "2400"
  45. #define    DTEMPDIR    "/usr/tmp"
  46.  
  47. FILE *fe;
  48.  
  49. void sgenv(thename, envname, dflt)
  50. char **thename;
  51. char *envname;
  52. char *dflt;
  53. {
  54.     char line[BUFSIZ];
  55.  
  56.     fprintf( stderr, "genv: %s %s\n", envname, dflt ); /**/
  57.     
  58.     if (fgets( line, BUFSIZ, fe ) == NULL) {
  59.         fprintf( stderr, "genv: %s not found, using %s\n", envname, dflt ); /* */
  60.         strcpy( *thename, dflt);
  61.     }
  62.     else {
  63.         strcpy( *thename, line);
  64.         fprintf( stderr, "genv: %s %s\n", envname, *thename ); /**/
  65.     }
  66. }
  67.  
  68. void sloadenv()
  69. {
  70.     fprintf( stderr, "sloadenv\n" );
  71.     if ( (fe = FOPEN( "/usr/lib/uucp/defaults", "r" )) == (FILE *) NULL ) {
  72.         fprintf( stderr, "can't open /usr/lib/uucp/defaults  %d\n", errno );
  73.         exit( -1 );
  74.     }
  75.     fprintf( stderr, "sloadenv - fopened\n" );
  76.     /* get environment var's */
  77.     sgenv( &name, NAME, DNAME );
  78.     sgenv( &mailbox, MAILBOX, DMAILBOX );
  79.     sgenv( &nodename, NODENAME, DNODENAME );
  80.     sgenv( &home, HOME, DHOME );
  81.     sgenv( &domain, DOMAIN, DDOMAIN );
  82.     sgenv( &maildir, MAILDIR, DMAILDIR );
  83.     sgenv( &confdir, CONFDIR, DCONFDIR );
  84.     sgenv( &spooldir, SPOOLDIR, DSPOOLDIR );
  85.     sgenv( &pubdir, PUBDIR, DPUBDIR );
  86.     sgenv( &mailserv, MAILSERVICE, DMAILSERVICE );
  87.     sgenv( &device, DEVICE, DDEVICE );
  88.     sgenv( &speed, SPEED, DSPEED );
  89.     sgenv( &tempdir, TEMPDIR, DTEMPDIR );
  90. }
  91. #endif
  92.  
  93. jmp_buf    dcpexit;
  94.  
  95. char *gets();
  96.  
  97. main(argc, argv)
  98.     int    argc;
  99.     char **argv; {
  100.     char volname[255];
  101.     int vrefnum;
  102.  
  103.     /* macinit() has to happen before ccomand in THINK_C cos ccomand
  104.      * may change the current folder through redirected input comming from
  105.      * a file that is not in the pcmail application folder. So open
  106.      * resource file first
  107.      */
  108.     macinit();
  109.  
  110. #ifdef THINK_C
  111.     GetVol(volname, &vrefnum);
  112. # ifdef IMMEDEXIT
  113.     console_options.pause_atexit = (short)0;
  114. # endif IMMEDEXIT
  115.     argc = ccommand(&argv);
  116.     SetVol(volname, vrefnum);
  117. #endif THINK_C
  118.  
  119. #ifdef STANDALONE
  120.     fprintf( stderr, "Please enter parameters: " );
  121.     if ( gets( line ) == (char *) NULL )
  122.         exit( -1 );
  123.     getargs( line, flds );
  124.     argv = flds;
  125.     /* mac specific prolog */
  126.     sloadenv();
  127. #else
  128.     /* mac specific prolog */
  129.     loadenv();
  130. #endif
  131.     
  132.     
  133.     curdir = getcwd( NULL, 0 );
  134.  
  135. #ifdef CWDSPOOL
  136.     CHDIR( spooldir );
  137. #endif
  138.  
  139.     /* setup longjmp for error exit's */
  140.     if ( setjmp( dcpexit ) == 0 ) {
  141.  
  142.         MAIN( argc, argv );
  143.  
  144.     }
  145.     
  146.  
  147.     /* mac specific epilog */
  148.     chdir( curdir );
  149.     exit(0);
  150. }
  151.  
  152.  
  153.